// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import iView from 'iview'
import 'iview/dist/styles/iview.css'
import moment from './plugins/moment'
import axios from './plugins/axios'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { base } from './router/config'
import filter from './plugins/filter'
import md5 from './plugins/md5'

Vue.use(iView)
Vue.use(moment)
Vue.use(axios)
Vue.use(md5)

// 全局导入过滤器
Object.keys(filter).forEach(key => Vue.filter(key, filter[key]))

Vue.config.productionTip = false

// 配置NProgress进度条选项  —— 动画效果
NProgress.configure({ ease: 'ease', speed: 500 })

// 全局路由拦截-进入页面前执行
router.beforeEach((to, from, next) => {
  if (to.path === `${base}login`) {
    return next()
  }

  // token验证，如果存储在sessionStorage里的auth的值丢失，就回到登陆页面，(开发时可以注释掉)
  // if (!sessionStorage.getItem('auth')) {
  //   return next(`${base}login`)
  // }

  // 如果页面在 /  默认页面，跳转到登陆页面(和vue路由重定向功能类似)
  if (to.path === `${base}`) {
    return next(`${base}login`)
  }
  // NProgress开始进度条
  NProgress.start()
  next()
})

// 全局后置钩子-常用于结束动画等
router.afterEach(transition => {
  // NProgress结束进度条
  NProgress.done()
  // console.log(transition)
})

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})
